package com.yoomiito.app.service;

import android.app.IntentService;
import android.content.Intent;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;

import androidx.annotation.Nullable;
import com.yoomiito.app.Constant;
import com.yoomiito.app.model.bean.VersionInfo;
import com.yoomiito.app.net.YmApi;
import com.yoomiito.app.utils.AllCode;
import com.yoomiito.app.utils.DownloadUtils;
import com.yoomiito.app.utils.L;
import com.yoomiito.app.utils.RxBusManager;
import com.yoomiito.app.utils.TouchUtils;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import cn.droidlover.xdroidmvp.kit.Kits;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;
import okhttp3.ResponseBody;

public class AppService extends IntentService {
    private final String TAG = "APP_SERVICE";

    private long range;
    private int progress;
    private int type;
    private long total;
    /**
     * Creates an IntentService.  Invoked by your subclass's constructor.
     *
     */
    public AppService() {
        super("APP_SERVICE");
    }

    @Override
    protected void onHandleIntent(@Nullable Intent intent) {
        type = intent.getIntExtra(Constant.TYPE, -1);
        switch (type) {
            case AllCode.Init:
                init();
                break;
            case AllCode.AppDownload:
                String url = intent.getStringExtra(Constant.DATA);
                downloadApk(url,"1.7.0");
                break;
        }
    }


    private void downloadApk(String url,String versionName) {
        File file = new File( getExternalCacheDir(),"down");
        if (!file.exists()) {
            file.mkdirs();
        }
        VersionInfo versionInfo = new VersionInfo();
        DownloadUtils.get().download(url, file.getAbsolutePath(), versionName+".apk", new DownloadUtils.OnDownloadListener1() {
            @Override
            public void onDownloadSuccess(File file) {
                VersionInfo versionInfo = new VersionInfo();
                versionInfo.setFile(file);
                RxBusManager.postWithTagToRxBusManager(versionInfo,Constant.DATA);
            }

            @Override
            public void onDownloading(int progress) {
                versionInfo.setProgress(progress);
                Message message = mHandler.obtainMessage();
                message.obj = versionInfo;
                mHandler.sendMessage(message);
            }

            @Override
            public void onDownloadFailed(Exception e) {

            }
        });
    }

    Handler mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            RxBusManager.postWithTagToRxBusManager((VersionInfo)msg.obj,Constant.DATA);
        }
    };

    private void init() {
        initBaiChuan();
        initLive();

        initHuoDongHeZi();
    }

    private void initHuoDongHeZi() {
//        HzSDK.getInstance()
//                .openDebug(true) //打开调式的日志
////                .useTencentX5(true)//是否使用腾讯的tbs预览服务，使用的话 需要导入腾讯的tbs包，不使用可忽略
//                //配置私有化部署的链接,如果不是私有化部署的用户 请忽略此属性(所谓私有化部署就是把盒子的代码部署到商家的服务器,用商家的域名访问)
////                .configDomain("http://emma.myserverDomain.com")//私有化部署的商家需要设置自己私有化部署的域名，普通商家忽略此属性
////                .setAppkey("2d137de047e2a9cc314118ac39e60cd4")//设置appkey，在盒子商家后台获取
//                .init(App.getApplication());
    }

    private void initBaiChuan() {
//        AlibcTradeCommon.turnOnDebug();
//        AlibcTradeBiz.turnOnDebug();
//        AlibcTradeSDK.asyncInit(App.getApplication(), new AlibcTradeInitCallback() {
//            @Override
//            public void onSuccess() {
//                //初始化成功，设置相关的全局配置参数
//                // ...
//                XLog.d("初始化Success");
//            }
//
//            @Override
//            public void onFailure(int code, String msg) {
//                //初始化失败，可以根据code和msg判断失败原因，详情参见错误说明
//                XLog.e("Error", "Code:" + code + "   Meg:" + msg);
//            }
//        });

//        AlibcTradeSDK.asyncInit(App.getApplication(), new AlibcTradeInitCallback() {
//            @Override
//            public void onSuccess() {
//                XLog.d("初始化Success");
//                Log.e("xing","AlibcTradeSDK 初始化Success");
//            }
//
//            @Override
//            public void onFailure(int code, String msg) {
//                XLog.e("SYY", "Code:" + code + "   Meg:" + msg);
//                Log.e("xing","AlibcTradeSDK 初始化onFailure Code:" + + code + "   Meg:" + msg);
//            }
//        });
    }
    //***********************************初始化直播开始*****************************
    /**
     * 初始化直播
     */
    private void initLive() {
//        AppCrashHandler.getInstance(this);
//        DemoCache.setContext(this);
//        NIMClient.init(this, getLoginInfo(), null);
//        StorageUtil.init(this, null);
//        ScreenUtil.init(this);
//        initLog();
////        NimUIKit.init(this, infoProvider, contactProvider);
//        if (inMainProcess()) {
//            // 注册自定义消息附件解析器
//            NIMClient.getService(MsgService.class).registerCustomAttachmentParser(new CustomAttachParser());
//
//            // init pinyin
//            PinYin.init(this);
//            PinYin.validate();
//
//            // 初始化UIKit模块
//            NimUIKit.init(this, infoProvider, contactProvider);
//        }
    }

//    private LoginInfo getLoginInfo() {
//        String account = Preferences.getUserAccount();
//        String token = Preferences.getUserToken();
//        String vodToken = Preferences.getVodToken();
//
//        DemoCache.setVodtoken(vodToken);
//
//        if (!TextUtils.isEmpty(account) && !TextUtils.isEmpty(token)) {
//            DemoCache.setAccount(account.toLowerCase());
//            return new LoginInfo(account, MD5.getStringMD5(token));
//        } else {
//            return null;
//        }
//    }
//
//    private void initLog() {
//        String path = StorageUtil.getDirectoryByDirType(StorageType.TYPE_LOG);
//        LogUtil.init(path, Log.DEBUG);
//        LogUtil.i("demo", " demo log path=" + path);
//    }
//
//    public boolean inMainProcess() {
//        String packageName = getPackageName();
//        String processName = SystemUtil.getProcessName(this);
//        return packageName.equals(processName);
//    }
//
//    private UserInfoProvider infoProvider = new UserInfoProvider() {
//        @Override
//        public UserInfo getUserInfo(String account) {
//            UserInfo user = NimUserInfoCache.getInstance().getUserInfo(account);
//            if (user == null) {
//                NimUserInfoCache.getInstance().getUserInfoFromRemote(account, null);
//            }
//
//            return user;
//        }
//
//        @Override
//        public int getDefaultIconResId() {
//            return R.drawable.avatar_def;
//        }
//
//        @Override
//        public Bitmap getTeamIcon(String teamId) {
//            /**
//             * 注意：这里最好从缓存里拿，如果读取本地头像可能导致UI进程阻塞，导致通知栏提醒延时弹出。
//             */
//            // 从内存缓存中查找群头像
//            Team team = TeamDataCache.getInstance().getTeamById(teamId);
//            if (team != null) {
//                Bitmap bm = ImageLoaderKit.getNotificationBitmapFromCache(team.getIcon());
//                if (bm != null) {
//                    return bm;
//                }
//            }
//
//            // 默认图
//            Drawable drawable = getResources().getDrawable(R.drawable.nim_avatar_group);
//            if (drawable instanceof BitmapDrawable) {
//                return ((BitmapDrawable) drawable).getBitmap();
//            }
//
//            return null;
//        }
//
//        @Override
//        public Bitmap getAvatarForMessageNotifier(String account) {
//            /**
//             * 注意：这里最好从缓存里拿，如果读取本地头像可能导致UI进程阻塞，导致通知栏提醒延时弹出。
//             */
//            UserInfo user = getUserInfo(account);
//            return (user != null) ? ImageLoaderKit.getNotificationBitmapFromCache(user.getAvatar()) : null;
//        }
//
//        @Override
//        public String getDisplayNameForMessageNotifier(String account, String sessionId, SessionTypeEnum sessionType) {
//            String nick = null;
//            if (sessionType == SessionTypeEnum.P2P) {
//                nick = NimUserInfoCache.getInstance().getAlias(account);
//            } else if (sessionType == SessionTypeEnum.Team) {
//                nick = TeamDataCache.getInstance().getTeamNick(sessionId, account);
//                if (TextUtils.isEmpty(nick)) {
//                    nick = NimUserInfoCache.getInstance().getAlias(account);
//                }
//            }
//            // 返回null，交给sdk处理。如果对方有设置nick，sdk会显示nick
//            if (TextUtils.isEmpty(nick)) {
//                return null;
//            }
//
//            return nick;
//        }
//    };
//
//    private ContactProvider contactProvider = new ContactProvider() {
//        @Override
//        public List<UserInfoProvider.UserInfo> getUserInfoOfMyFriends() {
//            List<NimUserInfo> nimUsers = NimUserInfoCache.getInstance().getAllUsersOfMyFriend();
//            List<UserInfoProvider.UserInfo> users = new ArrayList<>(nimUsers.size());
//            if (!nimUsers.isEmpty()) {
//                users.addAll(nimUsers);
//            }
//
//            return users;
//        }
//
//        @Override
//        public int getMyFriendsCount() {
//            return FriendDataCache.getInstance().getMyFriendCounts();
//        }
//
//        @Override
//        public String getUserDisplayName(String account) {
//            return NimUserInfoCache.getInstance().getUserDisplayName(account);
//        }
//    };
    //**********************************初始化直播结束**********************************************
}
